package ar.edu.caece.compiler.grammar.nonterminals;

import java.util.HashMap;
import java.util.Set;

import ar.edu.caece.compiler.grammar.terminals.GrammarTerminal;

public class SiguientesNoTerminales {
	private HashMap<Class<? extends NonTerminalSymbol>, Set<GrammarTerminal>> siguientes;

	public SiguientesNoTerminales() {
		siguientes = new HashMap<Class<? extends NonTerminalSymbol>,Set<GrammarTerminal>>();
		
//		siguientes.add(PROGRAMA.class, new HashSet<GrammarTerminal>() {$})
//		siguientes.add(BLOQUEI.class, new HashSet<GrammarTerminal>() {procedimiento, funcion, $})
//		siguientes.add(BLOQUEIA.class, new HashSet<GrammarTerminal>() {procedimiento, funcion, $})
//		siguientes.add(LISTADECLARACIONES1.class, new HashSet<GrammarTerminal>() {comenzar})
//		siguientes.add(LISTADECLAGLOBAL.class, new HashSet<GrammarTerminal>() {fin-globales})
//		siguientes.add(LISTADECLAGLOBAL1.class, new HashSet<GrammarTerminal>() {fin-globales})
//		siguientes.add(DECLAGLOBAL.class, new HashSet<GrammarTerminal>() {const, var, fin-globales})
//		siguientes.add(DECG2.class, new HashSet<GrammarTerminal>() {const, var, fin-globales})
//		siguientes.add(MASVARDG.class, new HashSet<GrammarTerminal>() {:})
//		siguientes.add(MASVARDG1.class, new HashSet<GrammarTerminal>() {:})
//		siguientes.add(ARRAYD.class, new HashSet<GrammarTerminal>() {,, :})
//		siguientes.add(ARRAYDV.class, new HashSet<GrammarTerminal>() {,, :})
//		siguientes.add(ARRAY.class, new HashSet<GrammarTerminal>() {,, )})
//		siguientes.add(ARRAYE.class, new HashSet<GrammarTerminal>() {,, )})
//		siguientes.add(TIPO.class, new HashSet<GrammarTerminal>() {;, =, ,})
//		siguientes.add(TIPO1.class, new HashSet<GrammarTerminal>() {;, =, ,})
//		siguientes.add(TIPO2.class, new HashSet<GrammarTerminal>() {;, =, ,})
//		siguientes.add(VALOR.class, new HashSet<GrammarTerminal>() {), ,, ;, [, ), *, **, /, //, +, ++, -, --})
//		siguientes.add(VALOR1.class, new HashSet<GrammarTerminal>() {), ,, ;, [, ), *, **, /, //, +, ++, -, --})
//		siguientes.add(VALOR2.class, new HashSet<GrammarTerminal>() {), ,, ;, [, ), *, **, /, //, +, ++, -, --})
//		siguientes.add(MASVARD.class, new HashSet<GrammarTerminal>() {:})
//		siguientes.add(MASVARD1.class, new HashSet<GrammarTerminal>() {:})
//		siguientes.add(LISTABLOQUES.class, new HashSet<GrammarTerminal>() {$})
//		siguientes.add(LISTABLOQUES1.class, new HashSet<GrammarTerminal>() {$})
//		siguientes.add(BLOQUE.class, new HashSet<GrammarTerminal>() {procedimiento, funcion, $, var, const, comenzar})
//		siguientes.add(BLOQUE1.class, new HashSet<GrammarTerminal>() {procedimiento, funcion, $, var, const, comenzar})
//		siguientes.add(BLOQUE2.class, new HashSet<GrammarTerminal>() {procedimiento, funcion, $, var, const, comenzar})
//		siguientes.add(NOMBREP.class, new HashSet<GrammarTerminal>() {[})
//		siguientes.add(NOMBREP1.class, new HashSet<GrammarTerminal>() {[})
//		siguientes.add(NOMBREP2.class, new HashSet<GrammarTerminal>() {[})
//		siguientes.add(LISTADECLARACIONES.class, new HashSet<GrammarTerminal>() {comenzar})
//		siguientes.add(DECLARACION.class, new HashSet<GrammarTerminal>() {var, const, procedimiento, funcion, comenzar})
//		siguientes.add(DECLARACION1.class, new HashSet<GrammarTerminal>() {var, const, procedimiento, funcion, comenzar})
//		siguientes.add(DECLARACION2.class, new HashSet<GrammarTerminal>() {const, var, fin-globales, procedimiento, funcion, comenzar})
//		siguientes.add(MASCONST.class, new HashSet<GrammarTerminal>() {;})
//		siguientes.add(ALTERP.class, new HashSet<GrammarTerminal>() {})
//		siguientes.add(ALTERP2.class, new HashSet<GrammarTerminal>() {})
//		siguientes.add(ALTERF.class, new HashSet<GrammarTerminal>() {})
//		siguientes.add(ALTERF1.class, new HashSet<GrammarTerminal>() {})
//		siguientes.add(ALTERF2.class, new HashSet<GrammarTerminal>() {})
//		siguientes.add(LISTAPROP.class, new HashSet<GrammarTerminal>() {fin-proc, fin-func, fin-mientras, fin-si, sino})
//		siguientes.add(LISTAPROP1.class, new HashSet<GrammarTerminal>() {fin-proc, fin-func, fin-mientras, fin-si, sino})
//		siguientes.add(PROP.class, new HashSet<GrammarTerminal>() {while, leer, mostrar, mostrarln, id, si, fin-proc, fin-func, fin-mientras, fin-si, sino})
//		siguientes.add(PROP1.class, new HashSet<GrammarTerminal>() {while, leer, mostrar, mostrarln, id, si, fin-proc, fin-func, fin-mientras, fin-si, sino})
//		siguientes.add(PROP2.class, new HashSet<GrammarTerminal>() {while, leer, mostrar, mostrarln, id, si, fin-proc, fin-func, fin-mientras, fin-si, sino})
//		siguientes.add(PROP3.class, new HashSet<GrammarTerminal>() {while, leer, mostrar, mostrarln, id, si, fin-proc, fin-func, fin-mientras, fin-si, sino})
//		siguientes.add(PROP4.class, new HashSet<GrammarTerminal>() {while, leer, mostrar, mostrarln, id, si, fin-proc, fin-func, fin-mientras, fin-si, sino})
//		siguientes.add(PROP5.class, new HashSet<GrammarTerminal>() {while, leer, mostrar, mostrarln, id, si, fin-proc, fin-func, fin-mientras, fin-si, sino})
//		siguientes.add(PROP6.class, new HashSet<GrammarTerminal>() {while, leer, mostrar, mostrarln, id, si, fin-proc, fin-func, fin-mientras, fin-si, sino})
//		siguientes.add(ALTERNATIVAS.class, new HashSet<GrammarTerminal>() {})
//		siguientes.add(ALTERNATIVAS1.class, new HashSet<GrammarTerminal>() {})
//		siguientes.add(ALTERNATIVAS2.class, new HashSet<GrammarTerminal>() {})
//		siguientes.add(CONDICION.class, new HashSet<GrammarTerminal>() {do, entonces, ,})
//		siguientes.add(CONDICION1.class, new HashSet<GrammarTerminal>() {do, entonces, ,})
//		siguientes.add(CONDICION2.class, new HashSet<GrammarTerminal>() {do, entonces, ,})
//		siguientes.add(CONDICION3.class, new HashSet<GrammarTerminal>() {do, entonces, ,})
//		siguientes.add(CONDICION4.class, new HashSet<GrammarTerminal>() {do, entonces, ,})
//		siguientes.add(CONDICION5.class, new HashSet<GrammarTerminal>() {do, entonces, ,})
//		siguientes.add(REL.class, new HashSet<GrammarTerminal>() {(, nnatural, nentero, id, anatural, aentero})
//		siguientes.add(REL1.class, new HashSet<GrammarTerminal>() {(, nnatural, nentero, id, anatural, aentero})
//		siguientes.add(REL2.class, new HashSet<GrammarTerminal>() {(, nnatural, nentero, id, anatural, aentero})
//		siguientes.add(REL3.class, new HashSet<GrammarTerminal>() {(, nnatural, nentero, id, anatural, aentero})
//		siguientes.add(TEXTO.class, new HashSet<GrammarTerminal>() {;})
//		siguientes.add(TEXTO1.class, new HashSet<GrammarTerminal>() {;})
//		siguientes.add(TEXTO2.class, new HashSet<GrammarTerminal>() {;})
//		siguientes.add(TEXTOA.class, new HashSet<GrammarTerminal>() {})
//		siguientes.add(TEXTOA1.class, new HashSet<GrammarTerminal>() {})
//		siguientes.add(POSIBILIDADES.class, new HashSet<GrammarTerminal>() {;})
//		siguientes.add(POSEXPRLLAM.class, new HashSet<GrammarTerminal>() {})
//		siguientes.add(POSEXPRLLAM1.class, new HashSet<GrammarTerminal>() {})
//		siguientes.add(POSEXPRLLAM2.class, new HashSet<GrammarTerminal>() {})
//		siguientes.add(POSID.class, new HashSet<GrammarTerminal>() {})
//		siguientes.add(POSP.class, new HashSet<GrammarTerminal>() {})
//		siguientes.add(EXPR.class, new HashSet<GrammarTerminal>() {}), ;, ), <, <>, =})
//		siguientes.add(POSIBILIDADES1.class, new HashSet<GrammarTerminal>() {;})
//		siguientes.add(POSIBILIDADES2.class, new HashSet<GrammarTerminal>() {;})
//		siguientes.add(POSIBILIDADES3.class, new HashSet<GrammarTerminal>() {;})
//		siguientes.add(PASOPAM.class, new HashSet<GrammarTerminal>() {})
//		siguientes.add(PASOPAM1.class, new HashSet<GrammarTerminal>() {})
//		siguientes.add(PASOPAM2.class, new HashSet<GrammarTerminal>() {})
//		siguientes.add(OTROSA.class, new HashSet<GrammarTerminal>() {)
//		siguientes.add(OTROSA1.class, new HashSet<GrammarTerminal>() {})
//		siguientes.add(PAR.class, new HashSet<GrammarTerminal>() {,, )})
//		siguientes.add(OTROSA2.class, new HashSet<GrammarTerminal>() {})
//		siguientes.add(FINALP.class, new HashSet<GrammarTerminal>() {})
//		siguientes.add(FINALP1.class, new HashSet<GrammarTerminal>() {})
//		siguientes.add(PARAMETROS.class, new HashSet<GrammarTerminal>() {)})
//		siguientes.add(PARAMETROS1.class, new HashSet<GrammarTerminal>() {)})
//		siguientes.add(PARAMETROS2.class, new HashSet<GrammarTerminal>() {)})
//		siguientes.add(PARAMETROS3.class, new HashSet<GrammarTerminal>() {)})
//		siguientes.add(OTROP.class, new HashSet<GrammarTerminal>() {})
//		siguientes.add(OTROP1.class, new HashSet<GrammarTerminal>() {})
//		siguientes.add(OTROP2.class, new HashSet<GrammarTerminal>() {})
//		siguientes.add(OTROP3.class, new HashSet<GrammarTerminal>() {})
//		siguientes.add(EXPRA.class, new HashSet<GrammarTerminal>() {})
//		siguientes.add(EXPRA1.class, new HashSet<GrammarTerminal>() {})
//		siguientes.add(EXPR2.class, new HashSet<GrammarTerminal>() {+, ++, -, --})
//		siguientes.add(EXPR2A.class, new HashSet<GrammarTerminal>() {+, ++, -, --})
//		siguientes.add(EXPR2A1.class, new HashSet<GrammarTerminal>() {+, ++, -, --})
//		siguientes.add(EXPR3.class, new HashSet<GrammarTerminal>() {*, **, /, //, +, ++, -, --})
//		siguientes.add(EXPR31.class, new HashSet<GrammarTerminal>() {*, **, /, //, +, ++, -, --})
//		siguientes.add(EXPR33.class, new HashSet<GrammarTerminal>() {,, ), *, **, /, //, +, ++, -, --})
//		siguientes.add(EXPR34.class, new HashSet<GrammarTerminal>() {*, **, /, //, +, ++, -, --})
//		siguientes.add(EXPR35.class, new HashSet<GrammarTerminal>() {*, **, /, //, +, ++, -, --})
//		siguientes.add(OP1.class, new HashSet<GrammarTerminal>() {(, nnatural, nentero, id, anatural, aentero})
//		siguientes.add(OP11.class, new HashSet<GrammarTerminal>() {(, nnatural, nentero, id, anatural, aentero})
//		siguientes.add(OP12.class, new HashSet<GrammarTerminal>() {(, nnatural, nentero, id, anatural, aentero})
//		siguientes.add(OP13.class, new HashSet<GrammarTerminal>() {(, nnatural, nentero, id, anatural, aentero})
//		siguientes.add(OP14.class, new HashSet<GrammarTerminal>() {(, nnatural, nentero, id, anatural, aentero})
//		siguientes.add(OP2.class, new HashSet<GrammarTerminal>() {(, nnatural, nentero, id, anatural, aentero)})
//		siguientes.add(OP21.class, new HashSet<GrammarTerminal>() {(, nnatural, nentero, id, anatural, aentero)})
//		siguientes.add(OP22.class, new HashSet<GrammarTerminal>() {(, nnatural, nentero, id, anatural, aentero)})
//		siguientes.add(OP23.class, new HashSet<GrammarTerminal>() {(, nnatural, nentero, id, anatural, aentero)})
//		siguientes.add(OP24.class, new HashSet<GrammarTerminal>() {(, nnatural, nentero, id, anatural, aentero)})
	}
	
	public Set<GrammarTerminal> getSiguientes(Class<? extends NonTerminalSymbol> symbol) {
		return siguientes.get(symbol);
	}
}
